方法或者类的具体实现的查找
方法或者类的具体实现的查找
参考博客:Finding the source code for built-in Python functions? - Stack Overflow
python 定义函数,必须有函数体,否则编译就会报错。函数体用一句 pass 占位是防止报错,并且不会有任何动作。这种只有 pass 的函数一般有以下几种可能:
-
父类中声明函数,但不声明实现,由继承的子类进行实现,也就是说这就是一个空方法;
-
这个函数的具体实现不用 python 编写,而是由例如 C 这种高效语法编写,在包中只用一个空方法占位,调用的时候是调用 C 语言实现的方法。python 中有一些需要大量运算的内置函数是用 C 或者 C++ 写的。怎么找具体实现看下文
方法如下:
-
直接输出模块的额
__file__
属性 -
使用
inspect
模块的getfile
方法或者getsource
方法,文档 -
对于内置模块下的方法,那就只能到 Python 的 GitHub 仓库 GitHub - python/cpython: The Python programming language 去找了,比如 Python 的大部分内置类和方法,基本上都在 Objects 目录下,比如 list类的实现、tuple类的实现、枚举类的实现。很多内置方法的实现,都在 bltinmodule.c 文件中,比如
next()
、max()
、min()
的实现,open()
方法的实现,在 GitHub 仓库上搜索了一下,发现在_io.py
文件中builtins.py
就是内置模块,我们熟知的很多方法都是内置方法,比如open()
、len()
、max()
、min()
等,具体请看 Built-in Functions